//var a;//声明变量
//var a=10;//声明变量的同时进行初始化
//console.log(a);

/**
 * 1.var声明变量有什么特点
 *   1.会进行变量提升
 *     书写顺序：
 *     console.log(a);
 *     var a=10;
 *     解析为var a； console.log(a); a=10;
 *   2.可以重复声明
 *       var a=10；
 *       var a=20；
 *       var a=30；
 *   3.不存在块级作用域
 *     if（true){
 *     var a=10；
 *     }
 *     console.log(a);//10
 */
/**
 * let声明变量的特点
 *   1.不会进行变量提升
 *     console.log(a);
       let a=10;//报错
     2.变量不可以重复声明
        let a = 10；  
        let a = 10；
     3.存在块级作用域  
        if(true){
        let a =10;
        }
        console.log(a);//报错a is not defined
 */
/**
 *const声明变量的特点
 *  1.不会进行变量提升
 *  console.log(a);
    const a = 10;//报错 Cannot access 'a' before initialization
    2.不可以重复声明
        const a = 10;
        const a = 20;//报错
    3.存在块级作用域
        if(true){
            const a = 10;
        }
        console.log(a);//报错 a is not defined 
    4.声明变量必须进行初始化 一般用于声明常量 
        var a;
        let b;
        const c = 10;
    5.一旦给变量进行初始化就不可以再次赋值
        const a = 10;
             a = 20;//报错 
        console.log(a);
 */